<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
         //创建promise对象
       const p1 = new Promise((resolve,reject)=>{
            console.log("开始请求A数据");
            //try  catch处理内部报错，一旦有报错，catch就会捕捉到
            try{
               //用setTimeout模拟ajax异步请求
               setTimeout(()=>{
                    console.log("A数据请求成功");
                    //模拟请求回来的数据
                    const userName = {
                        user: "张三"
                    }
                    //数据请求成功时返回数据
                    resolve(userName)
               },2500)
            }catch(e){
                //数据请求失败时返回报错信息
                reject(e.message);
            }
       })

       const p2 = new Promise((resolve,reject)=>{
            console.log("开始请求B数据");
            throw new Error("B请求失败")
            try{
                setTimeout((e)=>{
                    // console.log("定时器",e);
                    console.log("B数据请求成功");
                    //模拟请求回来的B数据
                    const age = {
                        age: 20
                    }
                    // 合并userName和age对象,并在请求成功后返回
                    resolve(age)
                },2000)
            }catch(e){
                reject(e.message);
            }
        })
    


        const p3 = new Promise((resolve,reject)=> {
            console.log("请求C数据");
            try{
            setTimeout(()=>{
                console.log("C数据请求成功");
                // 模拟请求成功的C数据
                const sex = {
                    sex: "女"
                }
                resolve({sex})

            },2000)
        }catch(e){
            console.log("catch",e);
            reject(e.message);
        }
       })

/*
    Promise.allSettled方法:
     -接收一个iterable类型作为参数(常用数组作参数)
     -allSettled方法默认返回成功的promise实例
     只是接收所有promise实例的返回状态和返回值
     将接收到的返回状态和返回值放在对象中
     按书写顺序放在数组中,作为allSettled的返回的成功状态的promise实例的值
     -无论接收的promise实例返回的是哪种状态的promise实例,allSettled永远都返回一个成功状态的promise实例
     
*/

const allResult = Promise.allSettled([]);
console.log("allResult",allResult);
allResult.then(value => {
    console.log("全部成功",value);
})
.catch(reason=>{
    console.log("有错误的",reason);
})


        
    </script>
</body>
</html>